非推奨の API は v1.22 以降削除されました
- まとめ
- 変更点
- クパチーノダイアログ
- クパチーノ ナビゲーション バーのアクションForegroundColor
- CupertinoTextThemeData.brightness
- HoverEvent から構築されたポインター イベント
- showDialog はビルダーを使用します
- Scaffold.resizeToAvoidBottomPadding
- ButtonTheme.bar
- InlineSpan、TextSpan、PlaceholderSpan
- RenderView.scheduleInitialFrame
- Layer.findAll
- バイナリメッセージ
- BuildContext の汎用メソッド
- WidgetsBinding.deferFirstFrameReport および WidgetsBinding.allowFirstFrameReport
- WaitUntilNoTransientCallbacks、WaitUntilNoPendingFrame、および WaitUntilFirstFrameRasterized
- タイムライン
まとめ
Flutter に準拠して、非推奨ポリシー、 以降にサポートが終了した非推奨の API 1.22 安定版リリースは削除されました。 API が非推奨になったのはこれが初めてです Flutter から削除されました。 これらの非推奨の一部は、 移行ガイド ポリシー。
影響を受けるすべての API はこれにコンパイルされています 移行を支援する主要な情報源。あクイックリファレンスシートも利用可能です。
あ設計書と記事ご利用いただけます Flutter の非推奨ポリシーの詳細については、「Flutter の非推奨ポリシー」を参照してください。
変更点
このセクションでは、影響を受けるクラスごとに非推奨をリストします。
CupertinoDialog
修正ツールによるサポート: IDE 修正のみ。
CupertinoDialog
v0.2.3 で非推奨になりました。
使用CupertinoAlertDialog
またCupertinoPopupSurface
その代わり。
移行ガイド
クパチーノアラートダイアログ
移行前のコード:
CupertinoDialog(child: myWidget);
移行後のコード:
CupertinoAlertDialog(content: myWidget);
クパチーノポップアップ表面
移行前のコード:
CupertinoDialog(child: myWidget);
移行後のコード:
CupertinoPopupSurface(child: myWidget);
参考文献
API ドキュメント:
CupertinoAlertDialog
CupertinoPopupSurface
関連する問題:
- CupertinoDialog クラスを廃止する
関連する PR:
- で廃止されました#20649
- に削除されました#73604
actionsForegroundColor
クパチーノのナビゲーション バー修正ツールによるサポート: いいえ
CupertinoNavigationBar.actionsForegroundColor
とCupertinoSliverNavigationBar.actionsForegroundColor
v1.1.2 で非推奨になりました。
設定primaryColor
あなたの中でCupertinoTheme
代わりにこれを伝播します。
にアクセスするには、primaryColor
、
電話CupertinoTheme.of(context).primaryColor
。
移行ガイド
移行前のコード:
移行後のコード:
CupertinoTheme(
data: CupertinoThemeData(
primaryColor: CupertinoColors.systemBlue
),
child: ...
);
// To access the color from the `CupertinoTheme`
CupertinoTheme.of(context).primaryColor;
参考文献
API ドキュメント:
CupertinoNavigationBar
CupertinoSliverNavigationBar
CupertinoTheme
CupertinoThemeData
関連する問題:
- CupertinoApp と CupertinoTheme を作成する
関連する PR:
- で廃止されました#23759
- に削除されました#73745
b2cbb747-3e04-476d-b004-84bea87c078a
修正ツールによるサポート: はい
CupertinoTextThemeData.brightness
v1.10.14 で非推奨になりました。
このフィールド メンバーは、非推奨になった時点で無効になりました。
これに代わるものはありません
パラメータの参照は削除する必要があります。
移行ガイド
移行前のコード:
const CupertinoTextThemeData themeData = CupertinoTextThemeData(brightness: Brightness.dark);
themeData.copyWith(brightness: Brightness.light);
移行後のコード:
const CupertinoTextThemeData themeData = CupertinoTextThemeData();
themeData.copyWith();
参考文献
API ドキュメント:
CupertinoTextThemeData
関連する問題:
- CupertinoColors と CupertinoTheme を改訂して動的な色を実現
関連する PR:
- で廃止されました#41859
- に削除されました#72017
fromHoverEvent
構築されたポインタ イベント修正ツールによるサポート: はい
のfromHoverEvent
のコンストラクタPointerEnterEvent
とPointerExitEvent
v1.4.3 で非推奨になりました。
のfromMouseEvent
代わりにコンストラクターを使用する必要があります。
移行ガイド
移行前のコード:
final PointerEnterEvent enterEvent = PointerEnterEvent.fromHoverEvent(PointerHoverEvent());
final PointerExitEvent exitEvent = PointerExitEvent.fromHoverEvent(PointerHoverEvent());
移行後のコード:
final PointerEnterEvent enterEvent = PointerEnterEvent.fromMouseEvent(PointerHoverEvent());
final PointerExitEvent exitEvent = PointerExitEvent.fromMouseEvent(PointerHoverEvent());
参考文献
API ドキュメント:
PointerEnterEvent
PointerExitEvent
関連する問題:
- PointerEnterEvent と PointerExitEvent は、 ホバーイベントから作成される
関連する PR:
- で廃止されました#28602
- に削除されました#72395
showDialog
用途builder
修正ツールによるサポート: はい
のchild
のパラメータshowDialog
v0.2.3 で非推奨になりました。
のbuilder
代わりにパラメータを使用する必要があります。
移行ガイド
移行前のコード:
showDialog(child: myWidget);
移行後のコード:
showDialog(builder: (context) => myWidget);
参考文献
API ドキュメント:
showDialog
関連する問題:
- showDialog は子ではなくビルダーを取得する必要があります
関連する PR:
- で廃止されました#15303
- に削除されました#72532
Scaffold.resizeToAvoidBottomPadding
修正ツールによるサポート: はい
のresizeToAvoidBottomPadding
のパラメータScaffold
v1.1.9 で非推奨になりました。
のresizeToAvoidBottomInset
代わりにパラメータを使用する必要があります。
移行ガイド
移行前のコード:
Scaffold(resizeToAvoidBottomPadding: true);
移行後のコード:
Scaffold(resizeToAvoidBottomInset: true);
参考文献
API ドキュメント:
Scaffold
関連する問題:
- 足場をネストするときに警告を表示する
- キーボード付きのセーフエリア
- 二重に積み重ねられた材料足場は、二重にsizeToAvoidBottomPaddingを変更しないでください
- Window と MediaQueryData の viewInsets とパディングは、それらがどのように相互作用するかを定義する必要があります
- tabbarview内でテキストフィールドを使用する場合の下部のオーバーフローの問題
関連する PR:
- で廃止されました#26259
- に削除されました#72890
ButtonTheme.bar
修正ツールによるサポート: いいえ
のbar
のコンストラクタButtonTheme
v1.9.1 で非推奨になりました。ButtonBarTheme
代わりに使用できますButtonBar
さん、
または別のコンストラクターを使用しますButtonTheme
用途が特定のものでない場合ButtonBar
。
ボタン固有のテーマは、TextButtonTheme
、ElevatedButtonTheme
、 とOutlinedButtonTheme
クラス、
それぞれが適切なボタン クラスに対応しており、TextButton
、ElevatedButton
とOutlinedButton
。
移行ガイド
移行前のコード:
ButtonTheme.bar(
minWidth: 10.0,
alignedDropdown: true,
height: 40.0,
);
移行後のコード、使用ButtonTheme
:
ButtonTheme(
minWidth: 10.0,
alignedDropdown: true,
height: 40.0,
);
移行後のコード、使用ButtonBarTheme
:
ButtonBarTheme(
data: ButtonBarThemeData(
buttonMinWidth: 10.0,
buttonAlignedDropdown: true,
buttonHeight: 40.0,
)
);
参考文献
API ドキュメント:
ButtonTheme
ButtonBarTheme
ButtonBar
TextButtonTheme
TextButton
ElevatedButtonTheme
ElevatedButton
OutlinedButtonTheme
OutlinedButton
関連する問題:
- ButtonTheme.bar は原色を使用する必要がある場合にアクセントカラーを使用します
- ThemeData.accentColor のテキストのコントラストが不十分です
- AlertDialog/ButtonBar の高さに影響するマテリアルTapTargetSize の変更の結果として高さが増加しました
関連する PR:
- で廃止されました#37544
- に削除されました#73746
InlineSpan
、TextSpan
、PlaceholderSpan
修正ツールによるサポート: いいえ
次のメソッドは、InlineSpan
、TextSpan
とPlaceholderSpan
順番に
画像などの段落へのウィジェットのインライン埋め込みを有効にします。
移行ガイド
移行前のコード | 移行後のコード |
---|---|
InlineSpan.text |
TextSpan.text |
InlineSpan.children |
87f982e7-9659-4470-9740-faecdc4b796 |
InlineSpan.visitTextSpan |
InlineSpan.visitChildren |
InlineSpan.recognizer |
TextSpan.recognizer |
InlineSpan.describeSemantics |
InlineSpan.computeSemanticsInformation |
PlaceholderSpan.visitTextSpan |
PlaceHolderSpan.visitChildren |
TextSpan.visitTextSpan |
TextSpan.visitChildren |
参考文献
API ドキュメント:
InlineSpan
TextSpan
PlaceholderSpan
WidgetSpan
関連する問題:
- テキスト: インライン画像をサポート
関連する PR:
- 開発経緯:
- #30069
- #33946
- #33794
- で廃止されました#34051
- に削除されました#73747
RenderView.scheduleInitialFrame
修正ツールによるサポート: いいえ
のRenderView.scheduleInitialFrame
メソッドは非推奨となり、 で削除されました
スプラッシュスクリーンが早期に取り外されるのを防ぐため、
黒い画面が表示されます。
これが起こるのは次の場合ですWidgetsFlutterBinding.ensureInitialized
と呼ばれていました。
代わりに、このメソッドの呼び出しを次のように置き換えます。RenderView.prepareInitialFrame
、
に続くRenderView.owner.requestVisualUpdate
。
移行ガイド
移行前のコード:
scheduleInitialFrame();
移行後のコード:
prepareInitialFrame();
owner.requestVisualUpdate();
参考文献
API ドキュメント:
RenderView
WidgetsFlutterBinding
関連する問題:
- WidgetsFlutterBinding.ensureInitialized() によるスプラッシュ画面のダウンが早すぎます
関連する PR:
- で廃止されました#39535
- に削除されました#73748
Layer.findAll
修正ツールによるサポート: いいえ
のLayer.findAll
メソッドは廃止されました
の導入Layer.findAnnotations
統一するために
の実装find
とfindAll
。
影響を受けるコードを移行するには、次のように呼び出します。findAllAnnotations
その代わり。
このメソッドは、AnnotationResult
、前者を含む
の戻り値findAll
のAnnotationResult.annotations
。
移行ガイド
移行前のコード:
findAll(offset);
移行後のコード:
findAllAnnotations(offset).annotations;
参考文献
API ドキュメント:
Layer
MouseRegion
RenderMouseRegion
AnnotatedRegionLayer
AnnotationResult
関連する問題:
- 最新の提案: MouseRegion のデフォルトは不透明です。 findAnnotations を実装するにはレイヤーが必要です
関連する PR:
- 最初に変更されたのは#37896
- で廃止されました#42953
- に削除されました#73749
BinaryMessages
修正ツールによるサポート: いいえ
のBinaryMessages
クラス、それに関連付けられた静的メソッド、およびdefaultBinaryMessenger
ゲッター
は非推奨となり削除されました。のdefaultBinaryMessenger
インスタンスはに移動されましたServicesBinding
。
これにより、別のデフォルトを登録できるようになりましたBinaryMessenger
テスト環境下では、
を作成することでServicesBinding
テスト用のサブクラス。そうすることで、その数を追跡できるようになります。
同期を目的とした保留中のプラットフォーム メッセージ。
移行ガイド
移行前のコード: | 移行後のコード: |
---|---|
defaultBinaryMessenger |
ServicesBinding.instance.defaultBinaryMessenger |
BinaryMessages |
BinaryMessenger |
BinaryMessages.handlePlatformMessage |
ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage |
BinaryMessages.send |
ServicesBinding.instance.defaultBinaryMessenger.send |
BinaryMessages.setMessageHandler |
ServicesBinding.instance.defaultBinaryMessenger.setMessageHandler |
BinaryMessages.setMockMessageHandler |
ServicesBinding.instance.defaultBinaryMessenger.setMockMessageHandler |
参考文献
API ドキュメント:
ServicesBinding
BinaryMessenger
関連する問題:
- Espresso/EarlGrey の Flutter 同期サポート
関連する PR:
- 最初に変更されたのは#37489
- で廃止されました#38464
- に削除されました#73750
BuildContext
一般的なメソッド修正ツールによるサポート: はい
いくつかの方法BuildContext
使っていたType
先祖を探すために。
これらのメソッドのほとんどは、呼び出しサイトでのキャストを暗黙的に含んでいました。
戻り値の型は親型でした。
さらに、提供されたタイプは分析時にチェックされませんでした
型が実際に制約されている場合でも。
これらのメソッドをジェネリックにすると、型の安全性が向上し、必要なコードが減ります。
これらのメソッドの変更は次のような影響を及ぼします。
のBuildContext
、Element
、 とStatefulElement
クラス。
のTypeMatcher
クラスも削除されました。
移行ガイド
移行前のコード:
ComplexLayoutState state = context.ancestorStateOfType(const TypeMatcher<ComplexLayoutState>()) as ComplexLayoutState;
移行後のコード:
ComplexLayoutState state = context.ancestorStateOfType<ComplexLayoutState>();
BuildContext
移行前のコード: | 移行後のコード: |
---|---|
inheritFromElement |
dependOnInheritedElement |
inheritFromWidgetOfExactType |
dependOnInheritedWidgetOfExactType |
ancestorInheritedElementForWidgetOfExactType |
getElementForInheritedWidgetOfExactType |
ancestorWidgetOfExactType |
findAncestorWidgetOfExactType |
116910ac-0f55-484c-abd1-d8884d547追加 | findAncestorStateOfType |
rootAncestorStateOfType |
findRootAncestorStateOfType |
ancestorRenderObjectOfType |
findAncestorRenderObjectOfType |
d33ee81b-118d-448b-9ada-7ae530fc7d2d
移行前のコード: | 移行後のコード: |
---|---|
inheritFromElement |
dependOnInheritedElement |
inheritFromWidgetOfExactType |
dependOnInheritedWidgetOfExactType |
ancestorInheritedElementForWidgetOfExactType |
getElementForInheritedWidgetOfExactType |
ancestorWidgetOfExactType |
findAncestorWidgetOfExactType |
ancestorStateOfType |
findAncestorStateOfType |
rootAncestorStateOfType |
findRootAncestorStateOfType |
ancestorRenderObjectOfType |
findAncestorRenderObjectOfType |
StatefulElement
移行前のコード: | 移行後のコード: |
---|---|
inheritFromElement |
dependOnInheritedElement |
参考文献
API ドキュメント:
Type
BuildContext
Element
StatefulElement
関連する PR:
- で廃止されました#44189
- 削除された場所:
- #69620
- #72903
- #72901
- #73751
WidgetsBinding.deferFirstFrameReport
&WidgetsBinding.allowFirstFrameReport
修正ツールによるサポート: はい
のdeferFirstFrameReport
とallowFirstFrameReport
メソッド
のWidgetsBinding
次の目的で非推奨となり削除されました。
最初のフレームのレンダリングを遅らせるオプションを提供します。
これは、初期化を取得する必要があるウィジェットに役立ちます
情報を非同期で待機中に取得します。
その情報は時間がかかるため、フレームでレンダリングする必要はありません
スプラッシュ画面を途中で終了させます。
のdeferFirstFrame
とallowFirstFrame
メソッド
代わりにそれぞれを使用する必要があります。
移行ガイド
移行前のコード:
final WidgetsBinding binding = WidgetsBinding.instance;
binding.deferFirstFrameReport();
binding.allowFirstFrameReport();
移行後のコード:
final WidgetsBinding binding = WidgetsBinding.instance;
binding.deferFirstFrame();
binding.allowFirstFrame();
参考文献
API ドキュメント:
WidgetsBinding
関連する PR:
- 最初に変更されたのは
- #45135
- #45588
- で廃止されました#45941
- に削除されました#72893
WaitUntilNoTransientCallbacks
、WaitUntilNoPendingFrame
、&WaitUntilFirstFrameRasterized
修正ツールによるサポート: いいえ
のWaitUntilNoTransientCallbacks
、WaitUntilNoPendingFrame
、 とWaitUntilFirstFrameRasterized
からのメソッドflutter_driver
パッケージは、より多くの機能を提供するために非推奨となり、削除されました。
構成可能なwaitForCondition
クライアントが希望する条件を作成できるAPI
を待つ。
移行ガイド
移行前のコード: | 移行後のコード: |
---|---|
WaitUntilNoTransientCallbacks |
WaitForCondition(NoTransientCallbacks()) |
WaitUntilNoPendingFrame |
WaitForCondition(NoPendingFrame()) |
WaitUntilFirstFrameRasterized |
WaitForCondition(FirstFrameRasterized)) |
参考文献
API ドキュメント:
WaitForCondition
関連する問題:
- Espresso/EarlGrey の Flutter 同期サポート
関連する PR:
- 最初に変更されたのは#37736
- で廃止されました#38836
- に削除されました#73754
タイムライン
安定版リリース: 2.0.0